#include<bits/stdc++.h>
using namespace std;
namespace IO{
    const int BUF=1<<21;
    char buff[BUF],*p1=buff,*p2=buff;
    #define getchar() (p1==p2&&(p2=((p1=buff)+fread(buff,1,BUF,stdin)),p1==p2)?EOF:*p1++)
    template<typename T>inline void read(T &x){
        char ch=getchar();x=0;int f=1;
        while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
        x*=f;
    }
    char obuf[BUF],*p3=obuf;
    inline void pc(char ch){
        if(p3-obuf<BUF) *p3++=ch;
        else fwrite(obuf,p3-obuf,1,stdout),p3=obuf,*p3++=ch;
    }
    inline void put(const int *s){while(*s) pc(*s),++s;}
    char ch[32],ctop;
    template<typename T>inline void print(T x){
    	if(x<0) x=~x+1,pc('-');
        if(!x) return pc(48);
        while(x) ch[++ctop]=x%10^48,x/=10;
        while(ctop) pc(ch[ctop--]);
    }
    inline void flush(){fwrite(obuf,p3-obuf,1,stdout);}
}
using namespace IO;
const int N=8e5+5;
int head[N],to[N<<1],nxt[N<<1],id[N<<1],tot;
inline void add(int x,int y,int z){
	to[++tot]=y;
	nxt[tot]=head[x];
	id[tot]=z;
	head[x]=tot;
}
int n,w[N];
int f[N][21],g[N][21];
long long ans[N],fv[N],gv[N];
void dfs1(int p,int fa){
	++f[p][20];
	for(int o=head[p],v;o;o=nxt[o]){
		if((v=to[o])==fa) continue;
		dfs1(v,p);
		int s1=0,s2=0;
		for(int j=20;j;--j){
			fv[p]+=1ll*s2*f[v][j]*min(j,w[id[o]]),s1+=f[v][j];
			fv[p]+=1ll*s1*f[p][j]*min(j,w[id[o]]),s2+=f[p][j];
		}
		for(int j=1;j<=20;++j) f[p][min(j,w[id[o]])]+=f[v][j];
		fv[p]+=fv[v];
	}
}
void dfs2(int p,int fa){
	++g[p][20];
	for(int o=head[p],v;o;o=nxt[o]){
		if((v=to[o])==fa) continue;
		int s1=0,s2=0;
		for(int j=20;j;--j){
			gv[p]+=1ll*s2*f[v][j]*min(j,w[id[o]]),s1+=f[v][j];
			gv[p]+=1ll*s1*g[p][j]*min(j,w[id[o]]),s2+=g[p][j];
		}
		for(int j=1;j<=20;++j) g[p][min(j,w[id[o]])]+=f[v][j];
		gv[p]+=fv[v];
	}
	long long val;
	int gg[21];
	for(int o=head[p],v;o;o=nxt[o]){
		if((v=to[o])==fa) continue;
		val=gv[p]-fv[v];
		for(int j=1;j<=20;++j) gg[j]=g[p][j];
		for(int j=1;j<=20;++j) gg[min(j,w[id[o]])]-=f[v][j];
		int s1=0,s2=0;
		for(int j=20;j;--j){
			val-=1ll*s2*f[v][j]*min(j,w[id[o]]),s1+=f[v][j];
			val-=1ll*s1*gg[j]*min(j,w[id[o]]),s2+=gg[j];
		}
		ans[id[o]]=val+fv[v];
		for(int j=1;j<=20;++j) g[v][min(w[id[o]],j)]+=gg[j],val+=1ll*gg[j]*min(w[id[o]],j);
		gv[v]=val;
		dfs2(v,p);
	}
}
int main(){
	freopen("tatooine.in","r",stdin);
	freopen("tatooine.out","w",stdout);
	read(n);
	for(int i=1,u,v;i<n;++i){
		read(u),read(v),read(w[i]);
		add(u,v,i);
		add(v,u,i);
	}
	dfs1(1,0);
	dfs2(1,0);
	for(int i=1;i<n;++i) print(ans[i]),pc('\n');
	flush();
	return 0;
}

